package com.xuetang9.controller.al.defect;

import com.xuetang9.domain.Defect;
import com.xuetang9.service.DefectService;
import com.xuetang9.vo.JsonResultVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import java.util.List;

/**
 * @describe: 缺陷控制器
 * @author: allende
 * @version: 1.0.0
 */
@Controller
@CrossOrigin //跨域请求
@ResponseBody //自动将java对象转为json对象
public class DefectController {

    @Autowired
    @Qualifier("DefectServiceAl")
    private DefectService defectService;

    /**
     * 添加缺陷信息
     * @param defect 需要添加的缺陷信息
     * @return 返回添加结果
     */
    @PostMapping("/defect/add")
    public JsonResultVO<Defect> addDefect(Defect defect){
        // 定义一个用于返回ajax请求的JSON对象
        JsonResultVO<Defect> jsonResultVO=new JsonResultVO<>();

        // 判断添加缺陷数据是否为空
        if(defect==null){
            jsonResultVO.setMessage("缺陷信息为空");
        }
        if(defect.getDefectName()!=null){
            jsonResultVO.setMessage("缺陷类型名称为空");
        }
       if(defect.getDefectLevel()!=null){
           jsonResultVO.setMessage("启用状态未设置");
       }
       //  添加
        int add=defectService.insertDefectType(defect);
        if(add!=1){
            jsonResultVO.setMessage("添加失败");
            return jsonResultVO;
        }
        jsonResultVO.setData(defect);
        jsonResultVO.setMessage("添加成功");
        return jsonResultVO;
    }

    /**
     * 删除
     * @param id 根据id删除
     * @return 删除结果
     */
    @PostMapping("/defect/delete")
    public JsonResultVO<Defect> deleteDefect(int id){
        // 定义一个用于返回ajax请求的JSON对象
        JsonResultVO<Defect> jsonResultVO=new JsonResultVO<>();
        // 判断是否有
        if(id == -1){
            jsonResultVO.setMessage("未选择缺陷");
            return jsonResultVO;
        }

        int deleteD=defectService.deleteDefect(id);
        if(deleteD != 1){
            jsonResultVO.setMessage("删除失败");
            return jsonResultVO;
        }
        jsonResultVO.setMessage("删除成功");
        return jsonResultVO;
    }


    /**
     * 修改缺陷类型
     * @param defect 需要修改的缺陷信息
     * @return 返回修改类型结果
     */
    @PostMapping("/defect/updateType")
    public JsonResultVO<Defect> updateType(Defect defect){
        // 定义一个用于返回ajax请求的JSON对象
        JsonResultVO<Defect> jsonResultVO=new JsonResultVO<>();

        // 判断添加缺陷数据是否为空
        if(defect==null){
            jsonResultVO.setMessage("缺陷信息为空");
        }
        if(defect.getDefectName()!=null){
            jsonResultVO.setMessage("缺陷类型名称为空");
        }
        if(defect.getDefectLevel()!=null){
            jsonResultVO.setMessage("启用状态未设置");
        }

        int updateT=defectService.updateDefectType(defect);
        if(updateT==-1){
            jsonResultVO.setMessage("更新失败");
            return jsonResultVO;
        }
        jsonResultVO.setData(defect);
        jsonResultVO.setMessage("修改成功");
        return jsonResultVO;
    }


    /**
     * 修改缺陷状态(启用禁用)
     * @param defect 需要修改缺陷状态
     * @return 返回修改缺陷状态结果
     */
    @PostMapping("/defect/updateStatus")
    public JsonResultVO<Defect> updateStatus(Defect defect){
        // 定义一个用于返回ajax请求的JSON对象
        JsonResultVO<Defect> jsonResultVO=new JsonResultVO<>();
        // 修改
        int updateT=defectService.updateDefectStatus(defect);
        if(updateT==-1){
            jsonResultVO.setMessage("更新失败");
            return jsonResultVO;
        }
        jsonResultVO.setData(defect);
        jsonResultVO.setMessage("修改成功");
        return jsonResultVO;
    }

    /**
     * 查询所有缺陷编号
     * @return 查询结果
     */
    public List<Defect> listDefect(){
        return defectService.listDefectType();
    }




}
